﻿namespace UniSender.Native
{
    public class Error
    {
        /// <summary>
        /// Описание ошибки
        /// </summary>
        public string error { get; set; }

        /// <summary>
        /// Код ошибки
        /// </summary>
        public string code { get; set; }
    }

    /// <summary>
    /// Интерфейс объектной модели ответа сервиса
    /// </summary>
    public interface IResponse
    {
        /// <summary>
        /// Результат
        /// </summary>
        object result { get; }

        /// <summary>
        /// Предупреждения
        /// </summary>
        Warning[] warnings { get; }

        /// <summary>
        /// Описание ошибки
        /// </summary>
        string error { get; }

        /// <summary>
        /// Код ошибки
        /// </summary>
        string code { get; }
    }

    /// <summary>
    /// Объектная модель ответа сервиса
    /// </summary>
    /// <typeparam name="T">Тип результата</typeparam>
    public class Response<T> : Error, IResponse
        where T : class
    {
        /// <summary>
        /// Результат
        /// </summary>
        public T result { get; set; }

        /// <summary>
        /// Предупреждения
        /// </summary>
        public Warning[] warnings { get; set; }

        object IResponse.result
        {
            get { return result; }
        }
    }
}
